package com.lxf.cloudfeign.client.userClient;

import com.alibaba.fastjson.JSONObject;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;

import javax.servlet.http.HttpServletRequest;
import java.util.List;

/**
 * @author 罗兴发
 * @data 2024/12/25 10:28
 * @description：
 */
@FeignClient("cloudUser") //请求的服务器名
@RequestMapping("/user") //请求根路径
public interface UserClient {
    //服务器端口
    @GetMapping("/v1/getUser")
    String getUser();

    @PostMapping("/v1/getUserByUserId")
    String getUserByUserId(@RequestBody JSONObject json);


    /**
     * 发送消息接口
     * @param json
     */
    @PostMapping("/v1/sendPrivateMsg")
    void sendPrivateMsg(@RequestBody JSONObject json);

    /**
     * 添加用户评分 (以供其他服务调用)
     * @param json
     * @return
     */
    @PostMapping("/v1/addUserRating")
    String addUserRating(@RequestBody JSONObject json);

    /**
     * 获取用户评分 (以供其他服务调用)
     * @param json
     * @return
     */
    @PostMapping("/v1/getUserRatingById")
    int getUserRatingById(@RequestBody JSONObject json);

    /**
     * 根据对象类型获取相应评分 (以供其他服务调用)
     * @param json
     * @return
     */
    @PostMapping("/v1/getUserRatingByObjType")
    String getUserRatingByObjType(@RequestBody JSONObject json);


    /**
     * 设置用户在线状态
     * @return
     */
    @GetMapping("/v1/setUserStatus")
    void setUserStatus();

    /**
     * 根据名字获取编码类型
     * @param json
     * @return
     */
    @PostMapping("/v1/getGoodCode")
    int getGoodCode(@RequestBody JSONObject json);

    /**
     * 根据用户ID，推荐数量、推荐类型
     * @param json
     * @return
     */
    @PostMapping("/v1/getRecommend")
    List<String> getRecommend(@RequestBody JSONObject json);

    /**
     * 根据key获取token是否存在
     * @param json
     * @return
     */
    @PostMapping("/v1/getRedisData")
    String getRedisData(@RequestBody JSONObject json);


    /**
     * redis存储
     * @param json
     * @return
     */
    @PostMapping("/v1/addRedisData")
    void addRedisData(@RequestBody JSONObject json);

    /**
     * redis数据删除
     * @param json
     * @return
     */
    @PostMapping("/v1/delRedisData")
    void delRedisData(@RequestBody JSONObject json);

    /**
     * 是否存在redis数据
     * @param json
     * @return
     */
    @PostMapping("/v1/existsRedisData")
    boolean existsRedisData(@RequestBody JSONObject json);

    /**
     * 根据用户ID查询用户
     * @return
     */
    @PostMapping("/v1/findById")
    String findById(@RequestBody JSONObject json);

    /**
     * 根据编码类型获取名称以及描述
     * @param json
     * @return
     */
    @PostMapping("/v1/getDataNameAndDesc")
    String getDataNameAndDesc(@RequestBody JSONObject json);
}
